package br.net.atasacramental.certificado.business;
import java.util.Date;
import br.net.atasacramental.certificado.model.Certificado;
import br.net.atasacramental.certificado.dao.CertificadoDAO;
import java.util.List;
import under.wsl.service.Service;
/**
 * @author alexandre.araujo
 */
public class CertificadoBLL{
    private CertificadoDAO dao = null;
    public CertificadoBLL() {
        this.dao = new CertificadoDAO();
    }
    @Service(cache=true)
    public List<Certificado> get(){
        return this.dao.get();
    }
    @Service()
    public Certificado getByIdCertificado(int idCertificado) {
        return this.dao.getByIdCertificado(idCertificado);
    }
    @Service()
    public List<Certificado> getByValidade(Date validade) {
        return this.dao.getByValidade(validade);
    }
    @Service()
    public List<Certificado> getByPeriodoValidade(Date DtaI,Date DtaF){
        return this.dao.getByPeriodoValidade(DtaI,DtaF);
    }
    @Service()
    public List<Certificado> getByValidadeComMargem(Date validade,int margem){
        return this.dao.getByValidadeComMargem(validade, margem);
    }
    @Service()
    public List<Certificado> getByPin(String pin) {
        return this.dao.getByPin(pin);
    }
    @Service(remove={"CertificadoBLL.get"})   
    public int insert(Certificado c){    
        if(this.dao.insert(c)){            
            return c.getIdCertificado();
        }
        return 0;
    }
    @Service(remove={"CertificadoBLL.get"})
    public boolean update(Certificado c){
        return this.dao.update(c);
    }
    @Service(remove={"CertificadoBLL.get"})
    public boolean delete(Certificado c){
         return this.dao.delete(c);
    }  
    @Service()
    public boolean validar(Certificado cet){    	
    	List<Certificado> certs = this.getByValidadeComMargem(cet.getValidade(), 5);//this.get();
    	boolean encontrado = false;
    	int tmcerts = certs.size();
		for(int z=0;z<tmcerts;z++){
			if(certs.get(z).autenticar(cet)){
				encontrado = true;
				cet.setPin(certs.get(z).getPin());
				break;
			}
		}     	
        return encontrado;
    }
}
